Increasingly, systems, applications, and infrastructures are offered as cloud-based services. Each of these cloud-based services variously run, or allow users to access, different types of software. Typically, a cloud service provider will operate one or more server farms and/or data centers as a hub from which the cloud-services are provided. Often, the server farms and/or data centers are located in different geographic regions allowing customers to be in closer proximity to the server farms or data centers utilized by those customers.
Often, both customers utilizing a service provider's cloud-based services, and the cloud service providers themselves, will access and run software in utilizing and providing the cloud-based services, respectively. For example, customers may utilize a cloud service provider's servers that host the customer's virtual machines (VM). Each of the customer's VMs may in turn access or execute software, as needed by the customer. If the software requires a license to run, each software instance running on a VM will require a license (or accounted for within the group license).
Cloud-based computing environments can dynamically change as the number of supported VMs, individual customers, and the number of software instances in use may scale up or down, at any given time. Thus, current, conventional software license management schemes rely on a system that either manually, or periodically, audits the cloud computing environment for the number of software instances in use.
Furthermore, the number of running software instances also dynamically changes, corresponding to the changes in the cloud environment. Traditional systems are not equipped to track the demand for a particular software, nor the availability of licenses for the particular software in real-time. Thus, in conventional situations, a static number of licenses may be allotted for use at a specific server farm, or for a specific customer, such as, by allotting only enough licenses corresponding to an average concurrent usage at the server farm, or by particular customers on a per customer basis.
Due to the reliance on the auditing process, software may be over-provisioned, exceeding the allotted number of software licenses. At other times, software may be under-provisioned, where software licenses that are not in use are not recognized as being available until the audit is conducted. In certain situations, a customer may be allocated a license to run a particular software instance on their VM, but the license may not be in use at given time, or over a specific duration of time. Conventional systems are unable to identify real-time availability of an individual license, without performing an audit of the cloud-computing environment itself, including the servers of the server farm or the VMs themselves.
Thus, a robust system for managing software in dynamic, scalable computing environments is provided in the embodiments below.